Overview

The information contained in this specification provides implementation guidelines and defines additional capabilities beyond the binary standards provided by the UNIX System V Application Binary Interface (the generic ABI or gABI) and the MIPS Processor Specific ABI (psABI), which are required for the development and distribution of shrinkwrap software. The vendors contributing to the development of this Conformance Guide include: These vendors are known collectively as the MIPS ABI group. UNIX System Laboratories (now UNIX Systems Group, Novell, Inc.) has supported the effort through review and comment on the specifications as they were developed. ISVs contributing to the development of this Conformance Guide include Oracle Corporation and SAS Institute Incorporated.

Audience and Purpose

This specification is intended to guide application writers in developing software that will run portably across all MIPS® RISC processor-based systems that are ABI compliant. It also is a specification for implementors of compliant operating systems. This document is intended to define areas beyond the current ABIs as well as address any outstanding ambiguities. Some information may not be relevant to all audiences. It is intended that application writers and ISVs use the gABI and the psABI in conjunction with this specification as a complete and rich environment for portable application development on the MIPS ABI reference processor.

Relationship to OCMP

Several of the member firms of the MIPS ABI group are also active in the Open Computing environment for MIPS Platforms (OCMP) efforts in Japan. The OCMP-ABI is based on the MIPS ABI version 1.0.1 with extensions in several areas: The intent of both the MIPS ABI group and the OCMP members is to keep their respective specifications aligned. Version 1.1 of this document introduced X11R5 and OSF/Motif 1.2 as required interfaces. The X11R5 interface is supported by Dynamic Shared Object libraries, while OSF/Motif 1.2 is supported by a static archive, libXm.a, present in the ABI build environment. Internationalization and CD-ROM access libraries are possible future additions to the MIPS ABI, but are not yet formally part of it. Prentice Hall has the programmer's reference set availble for Motif 1.2.

Organization

This specification is organized similarly to other ABIs for ease of use with the companion standards. In addition to the standard ABI, this specification covers conformance testing issues, implementation guidelines, and future directions.

This document is organized as follows:

Related Documentation

The following books should be used for reference. Single copies of the generic ABI and processor-specific ABI may be obtained from Simon and Schuster by calling 800-947-7700.

Terminology

The following terms are used throughout this document.
ABI                A specification conforming to the System V 
                   Application Binary Interface.  The System V ABI for
                   a particular system is composed of the generic ABI, the
                   processor-specific supplement for the processor
                   used in the system, and the processor-specific
                   conformance guide (this volume) used in the
                   system.

ABI-conforming     A program written to include only the system routines,
program            commands, and other resources included in the ABI; a
                   program compiled into an executable file that has
                   the formats and characteristics specified for such
                   files in the ABI; a program whose complies with the
                   rules given in the ABI.

ABI-conforming     A computer system that provides the
system             binary system interface for application programs
                   described in the System V ABI.

ABI-nonconforming  A program written to include system routines, commands,
program            resources not included in the ABI; a program compiled
                   into a format different from that specified in the
                   ABI; a program whose behavior does not comply with the
                   rules given in the ABI.

Generic ABI        The processor-independent portions of the System V
                   Application Binary Interface.  Also abbreviated to
                   "gABI".

Processor-specific Those portions of the System V ABI specific to a 
AbI or Supplement  particular processor architecture.  Also abbreviated 
                   to "psABI".

Conformance Guide  Implementation guidelines and additional capabilities
(this document)    beyond the gABI and psABI.  Also informally known 
                   as the "Black Book".

Reference Platform The combination of hardware and software such that
                   ABI-conforming applications which are generated on and
                   execute correctly on the reference platform are
                   guaranteed to execute correctly on all ABI-conforming
                   systems.  The reference platform hardware for the MIPS
                   ABI group consists of the Silicon Graphics family of
                   workstations and servers, including:
			o Personal IRIS Workstations
			o INDY Workstation
			o INDIGO and INDIGO R4000 Workstations
			o CRIMSON Systems
			o Power Series Servers
			o CHALLENGE Servers
			o ONYX Workstations
                   The reference platform software corresponding to the MIPS
                   ABI Conformance Guide Version 1.1 consists of a reference
                   operating system (IRIX 5.2) and compiler suite (IRIS
                   Development Option 3.18).  A future revision of this
                   software will be the Reference Platform for Version 1.2.

                   Note that this version of the ABI is based on the R3000
                   instruction set, although compatible applications may be
                   built and executed on all supported MIPS processors.

Undefined behavior Behavior that may vary from instance to instance or may
                   change at some time in the future.  Some undesirable
                   programming practices are marked in the ABI as yielding
                   undefined behavior.

Unspecified        A property of an entity that is not explicitly included
property           or referenced in the ABI and may change at some time in
                   the future.  In general, it is not good practice to make
                   a program depend on an unspecified property.

Conformance

The collection of specifications referenced in this volume, including the gABI, the psABI, and this specification, as well as the X Window System and OSF/Motif volumes, define the standard interfaces for compiled application programs on the MIPS architecture. Diffmarkings have been inserted in this document to indicate the evolution of the Conformance Guide. A "|" character in the right-hand margin indicates a change in the ABI made when Version 1.2 of the Conformance Guide was published. Deletions are marked with a "*" character. Note that there were considerable editorial changes (to fonts, layout, table headings, etc.) between these two revisions, the change bars are intended to highlight substantive changes only. Some entirely new sections are not diffmarked, and are so noted. Tables of symbols are also not diffmarked, instead a "*" is used to indicate new symbols. Differences between Version 1.0 and Version 1.1 of the Conformance Guide are not noted.

General Guidelines for Porting to MIPS ABI Platforms

A document entitled Constructing MIPS ABI Compliant Binaries on the IRIX 5.x Operating System is available. This porting guide includes information on how to port applications to the reference platform, as well as a summary of common problems encountered when porting applications. This guide is available from the Silicon Graphics Developer Program or any of the other companies participating in the MIPS ABI group. An informal list of "Frequently Asked Questions" is also available.

Working with the MIPS ABI Group

A reference paper describing the MIPS ABI group is available. It includes general information about the group as well as a list of marketing and technical representatives from each company. Application developers who wish to develop MIPS ABI compliant applications should contact the Applications manager at any one of the MIPS ABI companies to get detailed information on developer and marketing programs.

Platform Compliance Testing

All MIPS ABI conforming systems are measured for compliance against the MIPS ABI PVTS (Platform Verification Test Suite). This test suite is maintained and enhanced by Silicon Graphics under the supervision of the MIPS ABI Technical Committee. (Significant prior work on PVTS was done by Sony Microsystems, and by UniSoft Group Ltd.) Compliance testing ensures that the interfaces provided by the vendors manifest the specified semantics and syntax. The PVTS also verifies features contained in the ABI documents that may not have programmatic interfaces but may still be needed to satisfy binary compatibility. The group also performs multiple platform testing of selected applications to ensure that "real world" compatibility is achieved.

The Application Compliance Testing Tool (ACT)

The reference platform operating system provides an Application Compliance Testing tool to check the ABI compliance of a binary program. The tool is provided as an aid in identifying problem areas in producing a compliant binary; passing the tests provided by the tool does not ensure complete conformance.
check_abi_compliance  Determines whether a binary references anything
                      which is not defined by the ABI as well as making
                      certain that it supplies variables which are
                      required by the ABI.
check_abi_interface   Determines if a shared object supplies all public
                      routines which are required of it by the ABI.
                      It will also list public routines which the
                      shared object supplies which are not part of
                      the ABI.
check_for_syscalls    Finds any system calls in a binary (i.e., invocations
                      of the procedure syscall).  Binaries which contain
                      system calls are inherently not ABI compliant.
Go to Chapter 2

Go to Beginning

Back to the Table of Contents
Back to the MIPS ABI Home Page


Maintained by webmaster@mipsabi.org
last modified on November 21, 1995

Copyright © 1995, MIPS ABI Group, Incorporated.